package org.bookshare.validator.report;

import java.io.File;
import java.io.IOException;

import org.benetech.event.EventListener;

/**
 * A class that generates a report in an arbitrary format/location.
 * @author Reuben Firmin
 */
public interface ReportEngine {

    /**
     * Generate the report.
     * @param outputDir The directory to output the report to
     * @param reportName The name of the report
     * @param report The reporting metadata to base the report on.
     * @param listener Event listener object for user feedback.
     * @throws IOException if the output resource couldn't be written to.
     */
    void generateReport(File outputDir, String reportName, ValidationMetadata report, EventListener listener)
        throws IOException;
}
